package com.zenithmind.common.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 权限验证注解
 * 用于标记需要特定权限才能访问的方法
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface RequireAuth {
    
    /**
     * 需要的角色列表，满足其中一个即可
     * @return 角色数组
     */
    String[] roles() default {};
    
    /**
     * 是否需要管理员权限
     * @return 是否需要管理员权限
     */
    boolean admin() default false;
    
    /**
     * 是否允许用户访问自己的资源
     * 当设置为true时，会检查资源是否属于当前用户
     * @return 是否允许用户访问自己的资源
     */
    boolean allowSelf() default false;
    
    /**
     * 用户ID参数名称，用于检查资源所有权
     * 当allowSelf为true时使用
     * @return 参数名称
     */
    String userIdParam() default "userId";
    
    /**
     * 错误消息
     * @return 权限不足时的错误消息
     */
    String message() default "权限不足";
}
